Updated: 2025.04.06
Version: 0.8.6

The case files provided are just an explanation of each tool, corresponding to the video content. The specifics of how the animation should be created are not covered.
It is recommended to install the Heteroptera plugin with the Human plugin. If you really don't want to install, please find the camera related components by yourself and replace the Camera Crane component of Heteroptera for camera control.
----------

Changes in 0.8.6:

**EventOperation**
- feat: Now the first input defaults to Flatten
- fix: Fixed issue where the 5th output would return 0 to 1 instead of null when in range 0-1 but outside all event intervals
- fix: Fixed inability to pop up jump interval menu when using Graph-Mapper+ with Event and EventOperation

**ConnectToEventOperationButton**
- feat: When selected Graph Mapper after Event, if one is in a group and one isn't, and the in-group Graph Mapper is connected to an existing EventOperation, the out-of-group one will join this group and connect to the same EventOperation
- feat: When multiple Graph Mappers after Event are selected, each in different independent groups with their own connected Event Operation, they will connect to their respective Event Operations

**MotionText**
- performance: Optimized performance
- change: No coloring by default

**Color Alpha**
- feat: Added right-click menu to switch between 0-1/0-255 modes, showing current state
- change: Locks downstream components connected to its output when alpha value is 0

**TimeInterval**
- fix: Fixed incorrect interval output when MotionSlider is connected to input 1

**IntervalLock**
- fix: Fixed issue where it would output true when value was 0 and outside all event intervals

**New: GetViewportFov**
- feat: Automatically calculates horizontal FOV/vertical FOV values

**New: IntervalSwticher**
- feat: Simplifies control switching between ExportAnimation and V-Ray Timeline

**Toolbar**
- feat: Added XML configuration file saving with default location
- fix: Fixed toolbar icon height shrinking issue in horizontal orientation

**ModifySenderSettingsButton**
- feat: Added switching for automatically generated Graph types when double-clicking MotionSender (four modes):
  - Default Graph Mapper
  - Rich Graph Mapper (if available)
  - V-Ray Graph (if available)
  - Graph-Mapper+ (if available)
- feat: Save default frame settings to XML
- feat: Save default Graph settings to XML
- feat: Save default enabled state
----------

Motion

Motion is a GH animation plugin aiming to make GH animation easier.


Plugin Features:


**Components**

01_Animation

【Motion Slider】

Click on the interval text box to directly modify the Slider interval

With the CreateUnionSliderButton on the toolbar, you can create a Motion Union Slider, and then you can copy and paste the Motion Slider, and the Motion Union Slider's interval will be updated automatically.

The value of Motion Union Slider is linked with the value of Motion Slider.

Union Slider can be connected to all EventOperation and Interval Lock time inputs by right clicking on the menu to avoid disconnection in special cases.


【Motion Sender】

Placing a Motion Sender next to a Motion Slider's output automatically connects it to its output and displays its interval range.

Double-click on the Motion Sender to quickly create an Event and subsequent Graph Mapper, whose default mode is Bezier.


【Event】

The input Time receives the value from the Motion Sender.

The input Domain determines the range of values you want to change.

Select a component, click HIDE to hide the component from displaying outside the time range of the Event, click LOCK to lock the component from displaying outside the time range of the Event.

Mouse over the button range, it will automatically draw an indicator line to show which components are hidden/locked by the Event.

Double-Click Component to jump to the corresponding EventOperation of the Event.

----Right click menu

When using null mode, hiding/locking of the specified component will only be performed if the component does not receive a value.




【EventOperation】

Select multiple Graph Mappers behind the Event and click on the toolbar button ConnectToEventOprationButton, an EventOperation will be created and automatically connected to all selected Graph Mappers. If the Union Slider has been created correctly before, then its second input, Time, will also be automatically connected to the Union Slider.

Input Event displays the value of the current event [0-1].

Output Remapped Value displays the value output by the current event, i.e. the value in the interval of the second input of the Event.

The zoom component can click the + button to add two outputs

Output the serial number of the current event among all events

Output the value range of the current event

Double-click on the component to bring up a menu that shows the values of all intervals, and clicking on the specified interval will jump to the corresponding Event.

If the current frame is not in any of the intervals, it will output the last event interval and its corresponding event value.
For example, there are 3 intervals 0-30,60-90,120-150, if the current frame is 91, the last interval 60-90 and its value (i.e. the value when the frame is at 90) will be returned.


【Interval Lock】

Specify the interval, and put this component and the specified component in a Group, the time outside the interval will lock all the components in the group.



02_Export

【ExportSliderAnimation】

Export .png image with transparent background.

Export frames in Raytraced display mode, with settable number of samples.

Export frames in custom interval

After exporting, click Open button to jump to the export folder directly.

Press ESC to stop exporting in the middle.



03_Utils

【AdjustSearchCount】

Adjusts the maximum number of component searches to 30.



【FilletEdgeIndex】

Determines the edge number according to the Brep and input points, and chamfers the edge with FilletEdge.



【ZDepth】

Enable depth map display mode, similar to the ShowZBuffer command in Rhino.

Export depth map

Customise the scale of the exported depth map, the base resolution is based on the current viewport.



【Arrange Tab Components】

Specify the name of the plugin tab, group all the cells of the plugin to be placed on the canvas.



【Dynamic Output】

Automatically generates a corresponding number of outputs based on the inputs.

If it is a list, each output outputs 1 data from the list and displays **Out + serial number**.

If it is a tree, each output will output all the data under a path, and display **Path number**, e.g. {0;1}.



【Color Alpha】

Modify the alpha value of the colour.



【Motion Text】

Sets various properties of the text.

Set the character spacing of the text.

Multiple colours can be entered and the colours will be distributed to each character.

Output Text Mesh

Output text mesh



【Motion Image Preview】

Read the material provided by Motion Material



【Motion Material】

Support all material related parameter modification

Input Diffuse/Transparency/Environment/Bump maps.

Input the path of the image

Can also directly input **Javid** and **Bitmap+** plugin output System.Drawing.Bitmap format as texture.



【Motion Image Selector】

Read the path of the specified folder and output the corresponding image according to the Index.



【Image Transform Settings】

Modify the Transform of Diffuse / Transparency / Bump(Temporarily problematic) maps.



【Point On View】

Render xxx to Screen with Human plugin to render mesh and other objects to screen.

Output 1 is used for window preview, easy to determine the position.

Output 2 is used for exporting, and is the actual position of the object in the exported image.



**Toolbar buttons**

【Modify Slider】
Create Motion Slider: Enter multiple values separated by commas to create a Slider with corresponding range values.

Merge Motion Slider: Select the range of Motion Sliders and create a new Motion Slider.

Modify Motion Slider Range Values: Select multiple Motion Sliders and modify their range values by entering comma-separated values, allowing batch editing.

Split Selected Motion Slider Range: Enter additional values between the minimum and maximum values to create new Motion Sliders. For example, if a Motion Slider with a range of 50-100 is selected, it will display 50,100. You can input 50,75,100 and click Split to generate Motion Sliders with ranges 50-75 and 75-100.


【SliderControlWPFButton】

Controls the UnionSlider, updates in both directions.

Support input value, press Enter to confirm

Click + / - to increase or decrease the value

Right click it to continuously increase/decrease the value

Click MIN / MAX to jump to the minimum value.



【UpdateSenderButton】

Add Motion Sender to all Motion Sliders.



【CreateUnionSliderButton】

First select the Motion Slider and left click to create a Union Slider.

After that, you just need to copy the Motion Slider and Motion Sender together to automatically link the Union Slider with the Motion Slider's values and intervals.

Right click to unlink



【ConnectToMultipleEventOperationButton】

Select multiple Graph Mappers and click the button to create a new Event Operation and automatically connect them.

The newly created Event Operation will be automatically connected to the Union Slider.

If an existing Event Operation and a Graph Mapper are both selected, left clicking on them will also connect them one-to-one.

When establishing a connection, all associated Events and Graph Mappers are grouped together. If an EventOperation and group already exist, the new Event and Graph Mapper will be added to this group. 

If a selected Graph Mapper is not connected to an EventOperation but other Graph Mappers in the same group are already connected to an EventOperation, clicking the button will connect the currently selected Graph Mapper to that EventOperation


【ClickFinderButton】

Left-click on the BoundingBox that flashes to show all GH objects in the current model space.

Clicking on a GH object in the Rhino viewport will automatically select it and jump to its position in the GH canvas.



【AddScribbleWPFButton】

Create Scribble

Break the font size limit

Set up to 5 font styles

Select fonts directly by clicking on the drop-down list

Preview the line by the maximum number of characters in a single line.



【RangeSelectorWPFButton】

Select all the values of the existing range as the minimum and maximum values of the range and form the range.

The range param is automatically created in the centre of the canvas.



【NamedViewSwitchButton】

Switch state, on by default

When on, if there is already a Named View in the current Grasshopper document, press CTRL+ +/ - to cycle through the Named Views.

If no Named View has been created, you will be prompted after pressing the key.


【JumpToAffectedComponentButton】

Select Event, the button will light up, click the button to jump to the HIDE/LOCKed component.

Select the component that is HIDE/LOCKed by the Event component (tap), the button will light up, and click the button to jump to the corresponding Event component.


【MotionSliderSettings】
Left-click the button to set it to the open state, and the left side of the Motion Slider will display the time range corresponding to the frame numbers.
Right-click the button to set the frames per second (FPS). This setting will affect the display of the aforementioned time range.

